package main

import (
	"bufio"
	"fmt"
	"io"
	"io/ioutil"
	"os"
)

func main() {
	// readFile()
	// readFile2()
	// readFileIouitl()
	wirte()
}

// 原生读
func readFile() {
	fileObj, err := os.Open("./0_helloWorld.go")
	if err != nil {
		fmt.Println(err)
	}
	defer fileObj.Close()
	for {
		content := make([]byte, 12)
		n, err := fileObj.Read(content)
		if err == io.EOF {
			fmt.Println("读完了")
			return
		}
		if err != nil {
			fmt.Println(err)
		}
		fmt.Println(n, "<", string(content[:n]), ">")
	}
}

// 使用bufio库
func readFile2() {
	fileObj, err := os.Open("./0_helloWorld.go")
	if err != nil {
		fmt.Println(err)
	}
	defer fileObj.Close()
	reader := bufio.NewReader(fileObj)
	for {
		line, err := reader.ReadString('\n')
		if err == io.EOF {
			return
		}
		if err != nil {
			fmt.Println("读取文件出错", err)
		}
		fmt.Print(line)
	}
}

// 使用ioutil包
func readFileIouitl() {
	content, err := ioutil.ReadFile("./0_helloWorld.go")
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(string(content))
}

func wirte() {
	file, err := os.OpenFile("./tmp.txt", os.O_CREATE|os.O_APPEND, 0644)
	defer file.Close()
	if err != nil {
		fmt.Println(err)
	}
	file.Write([]byte("08构造函数和方法.go"))
}
